Role

Sub-role

Technologies

comments

   

Software Architecting

      
  

multiple paradigms

    
   

generalist

   
   

not a single paradigm purveyor

   
    

e.g. everything is Haskell – not

  
    

e.g. everything is an Object – not

  
    

e.g. everything is <xxx> - not

  
       
  

whiteboards

    
  

diagrams

    
  

code snippets

    
  

pseudo code

    
  

DSLs

    
   

shows ability to view problem from many angles

   
  

Drakon

http://drakon-editor.sourceforge.net/

   
  

StateCharts

    
  

UML

    
  

indirection

    
 

UX Architect

     
  

UX design is a divide-and-conquer activity

    
   

design a rudimentary piece of the UX

   
   

test it (for UX-ness, not for robustness) before proceeding

earliest drafts tested by Architect and Engineers ; later drafts tested by Customer (Stakeholder)

  
   

final design will be a composition of the various pieces

   
   

once designed, Engineering makes it practical and robust

   
  

Humane Interface (Jef Raskin)

    

Engineering

      
 

Realization Engineering

     
   

define first-cut of realized architecture

   
   

iterate design with Architect until realizable and all I’s dotted and T’s crossed

   
 

Correctness Engineering

     
  

proofs, etc.

    
 

UX Engineer

     
   

define parameters & timing for responsiveness

   
   

usability testing

   
   

feedback to UX architect

   
 

Error Handler Engineer

     
   

analyze testability of product ( & suggest changes)

   
   

create procedures / scripts for Q/A

   
  

Throw / catch

    
  

Signals

    
  

Events

    
  

A.O.C. (Aspect Oriented Programming)

    
 

Maintenance Engineer

     
  

Refactoring

    
  

D.R.Y.

    
 

Optimization Engineer

     
  

Profiling

    
   

remove Architectural indirection if appropriate

   
 

Security Engineering

     
 

Test Engineer

     
  

Incoming Test

 

test suitability of all bought-in technologies (e.g. code from GitHub)

  
  

Black Box Testing

    
  

White Box Testing

    
  

Q/A

 

devise ways to break product

  
  

Scripting

    
  

Back-to-back testing

 

large systems can feed inputs to same kinds of systems

  
  

Sikuli

    
 

Release Engineer

     
  

CD

    
  

Dashboards

    
  

CI

    

Implementation

      
 

Q/A

     
 

Maintenance

     
 

Testing

     
  

Hardware production test used HP Trace Analyzers that would generate a GUID for every test (including sequencing over time) for a “golden unit” (known to be good), when GUID didn’t match in production unit, then further testing was used to determine  where the fault was (kind of a Canary CI, replacing Unit test with faster/cheaper tests which signalled Go/no-go only)